package application;
import java.io.IOException;
import java.util.Observable;



public class Ziehen extends Observable {
	
	public static int var1=0;
	public static int var2=0;
	public static int var3=0;
	public static int var4=0; 
	
	
	
	
	public String derZug(Move zug)
	throws IOException
	{
		
		
	String aktuellefarbe="";
	
	String zugeinskorrekt="";

	bottom.koenigaktiv=0;
	FigurenAusgabe.Figurausgeben();

	System.out.println("===========================");
	if (bottom.SeitenCounter.equals("Spieler1"))
	{
	aktuellefarbe=""+bottom.Spieler1farbe;
	System.out.println(bottom.Spieler1+": Bitte waehle eine Figur (z.B. D4)");
	}//ende if
	if (bottom.SeitenCounter.equals("Spieler2"))
	{
	if (bottom.Spieler1farbe.equals("S"))
	{
	aktuellefarbe="W";	
	}//ende if
	else
	{
	aktuellefarbe="S";	
	}//ende else
	System.out.println(bottom.Spieler2+": Bitte w�hle eine Figur (z.B. D4)");	
	}//ende if
	
	Field fromField = (Field) zug.getFromCell();
	Field toField = (Field) zug.getToCell();
	var1 = fromField.getRow();
	var2 = fromField.getCol();
	System.out.println(""+var1+","+var2);
	System.out.println(aktuellefarbe);
	
	
	       
	      if (dieFigur.Figur[var1][var2].equals(aktuellefarbe))
	      {
	    	  //HIER NEUE METHODE AUFRUFEN
	    	  bottom.aktuelli=var1;
	    	  bottom.aktuellj=var2;
			  System.out.println(""+bottom.aktuelli+";"+bottom.aktuellj);
			  zugeinskorrekt="";
	      }//ende if aktuelle farbe
	      else
	      {
	    	  if (dieFigur.Figur[var1][var2].equals("K") && aktuellefarbe.equals("W"))
	    	  {
	    		  bottom.aktuelli=var1;
	    		  bottom.aktuellj=var2;
	    		  System.out.println(""+bottom.aktuelli+";"+bottom.aktuellj);
	    		  bottom.koenigaktiv=1;
	    		  zugeinskorrekt="";
	    		//HIER NEUE METHODE AUFRUFEN
	    	  }//ende if
	    	  else
	    	  {
	    	
	    	zugeinskorrekt="Das Feld ist nicht "+aktuellefarbe+" || ";
	    	  }//ende else
	    	  }//ende else
	    	   
	    	   
	     
	if (zugeinskorrekt.equals(""))
	{
		if (bottom.Spieler1farbe.equals("W"))
		{
			bottom.Spieler1farbe="S";
		}//ende if
		else
		{
			bottom.Spieler1farbe="W";
		}//ende else
			
		
	}//ende if
	
	
	return zugeinskorrekt;
	
	}//ende derZug()
	
	//ENDE DER ZUG___________________________________________________________________________________________-
	
	public String derZugRegelcheck(Move zug)
	throws IOException
	{
		
	String zugzweikorrekt="";
	

	System.out.println("Bitte waehle nun das Feld, auf das gezogen werden soll");	
	Field toField = (Field) zug.getToCell();

	var3 = toField.getRow();
	var4 = toField.getCol();
	int ibay=1;
	System.out.println("Ziel: "+var3+","+var4);
	   
	       if (ibay==1)
	       {
	   
	    	   
	    	if (var3==bottom.aktuelli || var4==bottom.aktuellj)
	    	{
	    	}//ende if
	    	else
	    	{
	    		zugzweikorrekt="Der Zug ist nicht moeglich, der Stein kann nur Diagonal oder Waagerecht gezogen werden";
	        	
	    	}//ende if
	    	
	    	if (var3==bottom.aktuelli && var4==bottom.aktuellj)
	    	{
	    		zugzweikorrekt="Sie duerfen das gleiche Feld nicht zweimal anwaehlen";	
	    	}//ende if
	    	
	    	if (DasSpielfeld.SpielFeld[var3][var4].equals("T") && bottom.koenigaktiv==0)
	    	{   
	    		zugzweikorrekt="Nicht moeglich! Das Feld ist ein Turm und der kann nur von einem Koenig betreten werden.";
	    	}//ende if
	    	
	    	if (DasSpielfeld.SpielFeld[var3][var4].equals("C") && bottom.koenigaktiv==0)
	    	{   
	    		zugzweikorrekt="Nicht moeglich! Das Feld ist der Thron und der kann nur von einem Koenig betreten werden.";
	    	}//ende if
	    	
	    	if (dieFigur.Figur[var3][var4].equals("L"))
	    	{}//ende if
	    	else
	    	{
	    		zugzweikorrekt="Das angewaehlte Feld ist von einem Stein der Farbe " +dieFigur.Figur[var3][var4]+" besetzt";
	    	}//ende else
	    	
	    	if (var3==bottom.aktuelli)
	    	{
	    	if (bottom.aktuellj<var4)
	    	{
	    		for(int jvor=bottom.aktuellj+1; jvor<=var4; jvor++)				
	    	      {
	    			if (dieFigur.Figur[var3][jvor].equals("L"))
	    			{}//ende if
	    			else
	    			{
	    			System.out.println(""+var3+";"+jvor);
	    			zugzweikorrekt="Der Zugweg darf nicht versperrt sein";
	    			}//ende else
	    	      }//ende for
	    		
	    		if (dieFigur.Figur[var3][var4].equals("K"))
	        	{
	        	if (DasSpielfeld.SpielFeld[bottom.aktuelli][bottom.aktuellj].equals("T"))
	        	{
	        		zugzweikorrekt="Der Koenig ist auf der rettenden Burg. Der Verteidiger hat gewonnen.";
	        		System.exit(0); 
	        	}//ende if
	        	}//ende if
	    		
	    	System.out.println(bottom.aktuelli+";"+bottom.aktuellj);
	    	System.out.println(var3+";"+var4);
	    	dieFigur.Figur[var3][var4]=dieFigur.Figur[bottom.aktuelli][bottom.aktuellj];
	    	dieFigur.Figur[bottom.aktuelli][bottom.aktuellj]="L";
	    	if (bottom.SeitenCounter.equals("Spieler1"))
	    	{
	    	bottom.SeitenCounter="Spieler2";
	    	}//ende if
	    	
	    	else
	    	{
	    		bottom.SeitenCounter="Spieler1";	
	    	}//ende else
	    	FigurenAusgabe.Figurausgeben();
	    	return zugzweikorrekt;
	    	
	    	}//ende if
	    	
	    	//_________________________________________________________
	    	
	    	if (bottom.aktuellj>var4)
	    	{
	    		for(int jvor=var4; jvor<bottom.aktuellj; jvor++)				
	    	      {
	    			if (dieFigur.Figur[var3][jvor].equals("L"))
	    			{}//ende if
	    			else
	    			{
	    			System.out.println(""+var3+";"+jvor);
	    			zugzweikorrekt="Der Zugweg darf nicht versperrt sein";
	    			}//ende else
	    	      }//ende for
	    		
	    		if (dieFigur.Figur[var3][var4].equals("K"))
	        	{
	        	if (DasSpielfeld.SpielFeld[bottom.aktuelli][bottom.aktuellj].equals("T"))
	        	{
	        		zugzweikorrekt="Der Koenig ist auf der rettenden Burg. Der Verteidiger hat gewonnen.";
	        		System.exit(0); 
	        	}//ende if
	        	}//ende if
	    		
	    	System.out.println(bottom.aktuelli+";"+bottom.aktuellj);
	    	//System.out.println(i+";"+j);
	    	dieFigur.Figur[var3][var4]=dieFigur.Figur[bottom.aktuelli][bottom.aktuellj];
	    	dieFigur.Figur[bottom.aktuelli][bottom.aktuellj]="L";
	    	if (bottom.SeitenCounter.equals("Spieler1"))
	    	{
	    	bottom.SeitenCounter="Spieler2";
	    	}//ende if
	    	
	    	else
	    	{
	    		bottom.SeitenCounter="Spieler1";	
	    	}//ende else
	    	FigurenAusgabe.Figurausgeben();
	    	return zugzweikorrekt;
	    	
	    	}//ende if
	    	
	    	}//ende if //ende if i=bottom.aktuelli
	    	
	    	if (var4==bottom.aktuellj)
	    	{
	    		if (bottom.aktuelli<var3)
	        	{
	        		for(int ivor=bottom.aktuelli+1; ivor<=var3; ivor++)				
	        	      {
	        			if (dieFigur.Figur[ivor][var4].equals("L"))
	        			{}//ende if
	        			else
	        			{
	        			System.out.println(""+ivor+";"+var4);
	        			zugzweikorrekt="Der Zugweg darf nicht versperrt sein";
	        			}//ende else
	        	      }//ende for
	        		
	        		if (dieFigur.Figur[var3][var4].equals("K"))
	            	{
	            	if (DasSpielfeld.SpielFeld[bottom.aktuelli][bottom.aktuellj].equals("T"))
	            	{
	            		zugzweikorrekt="Der K�nig ist auf der rettenden Burg. Der Verteidiger hat gewonnen.";
	            		System.exit(0); 
	            	}//ende if
	            	}//ende if
	        		
	        		
	        	System.out.println(bottom.aktuelli+";"+bottom.aktuellj);
	        	System.out.println(var3+";"+var4);
	        	dieFigur.Figur[var3][var4]=dieFigur.Figur[bottom.aktuelli][bottom.aktuellj];
	        	dieFigur.Figur[bottom.aktuelli][bottom.aktuellj]="L";
	        	if (bottom.SeitenCounter.equals("Spieler1"))
	        	{
	        	bottom.SeitenCounter="Spieler2";
	        	}//ende if
	        	
	        	else
	        	{
	        		bottom.SeitenCounter="Spieler1";	
	        	}//ende else
	        	FigurenAusgabe.Figurausgeben();
	        	return zugzweikorrekt;
	        	
	        	}//ende if
	    		
	    		//___________________________________________________________________
	    		
	    		if (bottom.aktuelli>var3)
	        	{
	        		for(int ivor=var3; ivor<bottom.aktuelli; ivor++)				
	        	      {
	        			if (dieFigur.Figur[ivor][var4].equals("L"))
	        			{}//ende if
	        			else
	        			{
	        			System.out.println(""+ivor+";"+var4);
	        			zugzweikorrekt="Der Zugweg darf nicht versperrt sein";;
	        			}//ende else
	        	      }//ende for
	        	System.out.println(bottom.aktuelli+";"+bottom.aktuellj);
	        	System.out.println(var3+";"+var4);
	        	
	        	if (dieFigur.Figur[var3][var4].equals("K"))
	        	{
	        	if (DasSpielfeld.SpielFeld[bottom.aktuelli][bottom.aktuellj].equals("T"))
	        	{
	        	System.out.println("Der K�nig ist auf der rettenden Burg. Der Verteidiger hat gewonnen.");
	        	System.exit(0); 
	        	}//ende if
	        	}//ende if
	        	
	        	dieFigur.Figur[var3][var4]=dieFigur.Figur[bottom.aktuelli][bottom.aktuellj];
	        	dieFigur.Figur[bottom.aktuelli][bottom.aktuellj]="L";
	        	if (bottom.SeitenCounter.equals("Spieler1"))
	        	{
	        	bottom.SeitenCounter="Spieler2";
	        	}//ende if
	        	
	        	else
	        	{
	        		bottom.SeitenCounter="Spieler1";	
	        	}//ende else
	        	
	        	
	        	
	        	}//ende if
	    		
	    	}//ende  if //j==bottom.aktuellj
	    	
	       }//ende if
	     

	       FigurenAusgabe.Figurausgeben();
	       
	       setChanged();
	       notifyObservers(dieFigur.Figur);      
	       
	return zugzweikorrekt;

	}//ende derZugRegelcheck()


}
